#ifndef _UIMAGE_H_
#define _UIMAGE_H_

#include "common/type.h"
#include "common/common.h"
#include "base/threadsafe_vector.h"

enum class ImageType
{
    BMP,
    PNG,
    JPEG
};

/**
 * 引擎支持的图片格式
 * 用于加载2D纹理
 * 引擎导入的图片都会被加载成此对象
 *
 */
class UImage2D
{
public:
    friend class UTexture;

    UImage2D() = default;
    UImage2D(const uString &path);
    UImage2D(const UImage2D &ImgObj);
    ~UImage2D();
    uBoolean LoadResource(const uString &path);

private:
    uint32 m_id;
    uint32 m_width;
    uint32 m_height;
    ImageType m_image_type;
    SDL_Surface *m_data;
};

/**
 * 引擎支持的精灵对象
 * 渲染管线渲染使用此对象
 * 此对象可为单张图像，也可多张序列帧图片进行播放
 * 如果需要在引擎创建的世界内进行管理，需要创建的是USpiritComponent然后将其附加到Actor中
 *
 */
class USpirit
{
public:
    USpirit();
    USpirit(const USpirit& spirit);
    ~USpirit();
private:
    //播放速率,fps
    float32 m_play_rate;
    //精灵图集
    ThreadSafe_Vector<UImage2D> m_spirites;
};

#endif